Integer na DateTime v minutach.
Otázka od: David Michal
8. 9. 2002 6:04
Zdravim,
Potrebuji delat nejake vypocty s casem. Jednu hodnotu mam integer a s tou
bych chtel pocitat jako s minutami. Nevite nekdo jak na to? Napr. pokud budu
mit cas time := 16:30 a i := 30,
Jak muzu udelat time := time - i, abych dostal time = 16:00 ?
Diky za cas,
David
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.385 / Virus Database: 217 - Release Date: 04/09/2002
Odpovedá: Blazek Jaroslav
8. 9. 2002 10:15
Ahoj,
> david.michal@www-bv.com 6.9.02 17:04 >>>
>Potrebuji delat nejake vypocty s casem. Jednu hodnotu mam integer a s tou
>bych chtel pocitat jako s minutami. Nevite nekdo jak na to? Napr. pokud budu
>mit cas time := 16:30 a i := 30,
>Jak muzu udelat time := time - i, abych dostal time = 16:00 ?
var cas:TDateTime;
MinusMinuty:integer;
cas := Time();
MinusMinuty := 30;
ShowMessage(FormatDateTime('hh:mm', cas));
cas := cas - MinusMinuty / (60 * 24);
ShowMessage(FormatDateTime('hh:mm', cas));
S pozdravem
Bc. Jaroslav Blazek
Access-IT Ceska Lipa
mailto:jaroslav.blazek@access-it.cz
http://www.access-it.cz
ICQ# : 133673990
+420605/813644
Odpovedá: Jan Sebelík
8. 9. 2002 17:14
> Potrebuji delat nejake vypocty s casem. Jednu hodnotu mam integer a s tou
> bych chtel pocitat jako s minutami. Nevite nekdo jak na to? Napr. pokud budu
> mit cas time := 16:30 a i := 30,
> Jak muzu udelat time := time - i, abych dostal time = 16:00 ?
V typu TDateTime je datum a cas ulozen jako
(pocet dni od nejakeho data)+(cas jako pomerna cast dne).
Takze napr. 12:00 je 0.5, 18:00 je 0.75 atd.
Tedy jestli ti rozumin
T,T1: TDateTime;
I: Integer;
T := StrToTime('16:30');
I := 30;
T1 := T - I/(24*60);
TimeToStr(T1)='16:00:00';
Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================
----------
> Odesílatel: David Michal <david.michal@www-bv.com>
> Komu: delphi-l@clexpert.cz
> Předmět: Integer na DateTime v minutach.
> Datum: 6. září 2002 17:04
>
> Zdravim,
> Potrebuji delat nejake vypocty s casem. Jednu hodnotu mam integer a s tou
> bych chtel pocitat jako s minutami. Nevite nekdo jak na to? Napr. pokud budu
> mit cas time := 16:30 a i := 30,
> Jak muzu udelat time := time - i, abych dostal time = 16:00 ?
> Diky za cas,
> David
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.385 / Virus Database: 217 - Release Date: 04/09/2002
Odpovedá: David Michal
10. 9. 2002 19:59
Zdravim,
Jo tohle funguje pekne, diky. A da se jeste nejakym zpusobem udelat obraceny
prevod?
Napr. cas : TDateTime; Minuty : Integer;
Pokud bude cas = '1:30' jak zajistit aby Minuty = 90 ?
Diky,
David
var cas:TDateTime;
MinusMinuty:integer;
cas := Time();
MinusMinuty := 30;
ShowMessage(FormatDateTime('hh:mm', cas));
cas := cas - MinusMinuty / (60 * 24);
ShowMessage(FormatDateTime('hh:mm', cas));
S pozdravem
Bc. Jaroslav Blazek
Access-IT Ceska Lipa
mailto:jaroslav.blazek@access-it.cz
http://www.access-it.cz
ICQ# : 133673990
+420605/813644
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.385 / Virus Database: 217 - Release Date: 04/09/2002
Odpovedá: Lebeda David
11. 9. 2002 7:23
> Jo tohle funguje pekne, diky. A da se jeste nejakym zpusobem udelat
> obraceny prevod? Napr. cas : TDateTime; Minuty : Integer; Pokud bude
> cas = '1:30' jak zajistit aby Minuty = 90 ?
Ahoj,
no uplne stejne:
Minuty := Cas * 24 * 60;
David Lebeda
Odpovedá: David Michal
11. 9. 2002 10:48
Zdravim,
Jenomze pri tomto zapisu dostanu chybovou hlasku pro kompilaci:
Incompatible types: 'Integer' and 'Extended'
Zapisuji toto:
Minuty := (DM.Q_TimeSheet.FieldByName('LBreak').AsDateTime) * 60 * 24;
Diky,
David
Ahoj,
no uplne stejne:
Minuty := Cas * 24 * 60;
David Lebeda
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.385 / Virus Database: 217 - Release Date: 04/09/2002
Odpovedá: Lebeda David
12. 9. 2002 8:05
> Jenomze pri tomto zapisu dostanu chybovou hlasku pro kompilaci:
> Incompatible types: 'Integer' and 'Extended'
> Zapisuji toto:
> Minuty := (DM.Q_TimeSheet.FieldByName('LBreak').AsDateTime) * 60 * 24;
>
> Minuty := Cas * 24 * 60;
>
Ahoj,
typ TDateTime je ve skutecnosti realne cislo, takze i vyraz Cas * 24 * 60 je
realne
cislo (nemusi jit totiz nutne o cele minuty) - v danem pripade extended.
Promenna
Minuty je typu integer. Bude tedy potreba realne cislo prevest na integer:
- fce trunc odrizne pripadnou desetinnou cast
- fce round desetinne cislo zaokrouhli na cele (ale viz help zejmena pripade,
ze
desetinna cast je prave pet desetin - pak to zaokrouhli tak, aby vysledek byl
sude
cislo).
Cili napr. Minuty := round(Cas * 24 * 60);
David Lebeda